package com.ziyun.pop.modules.order.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ziyun.pop.common.pay.PayParamDto;
import com.ziyun.pop.modules.order.dto.OrderDiscountDto;
import com.ziyun.pop.modules.order.entity.OrderInfoEntity;
import io.renren.common.utils.R;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;

/**
 * 工厂订单接口
 * @author gaosheng
 * @date 2018-09-26 17:00
 */
public interface FactoryOrderService extends IService<OrderInfoEntity> {

    /**
     * 分页查询
     * @param params
     * @return
     */
    R queryPageSellerFactoryOrderList(Map<String, Object> params);

    /**
     * 分页查询
     * @param params
     * @return
     */
    R queryPageBuyerFactoryOrderList(Map<String, Object> params);

    /**
     * 详情
     * @param orderId
     * @return
     */
    R orderInfo(String orderId);

    /**
     * 商品审核
     * @param itemId
     * @return
     */
    R audit(Integer itemId);

    /**
     * 商品详情
     * @param orderId
     * @return
     */
    R orderItemInfo(String orderId);

    /**
     * 制作进度
     * @param orderNo
     * @return
     */
    R orderItemProgress(String orderNo);

    /**
     * 取消订单
     * @param orderId
     * @return
     */
    R orderCancel(String orderId);

    /**
     * 订单支付
     * @param orderId
     * @return
     */
    R orderPay(String orderId);

    /**
     * 订单验货确定
     * @param orderId
     * @return
     */
    R orderReceive(String orderId);

    /**
     * 订单审核完成
     * @param orderId
     * @return
     */
    R orderFinish(String orderId);

    /**
     * 订单调价
     * @param orderDiscountDto
     * @return
     */
    R orderDiscount(OrderDiscountDto orderDiscountDto, String username);

    /**
     * 用友单号
     * @param orderId
     * @param yonyouOrderNo
     * @return
     */
    R orderYonyou(String orderId, String yonyouOrderNo);

    /**
     * 开始生产
     * @param orderId
     * @return
     */
    R produceStart(String orderId);

    /**
     * 生产完成
     * @param orderId
     * @return
     */
    R produceFinish(String orderId);

    /**
     * 确认收货
     * @param orderId
     * @return
     */
    R confirmGetGoods(String orderId);

    /**
     * 验货确定
     * @param orderId
     * @return
     */
    R confirmReceive(String orderId);

    /**
     * 审核完成
     * @param orderId
     * @return
     */
    R auditFinish(String orderId);

    R orderPayUmf(PayParamDto payParamDto, Long mallUserId, String ip);

    void umfPayRecall(HttpServletRequest request, HttpServletResponse response) throws Exception;
}
